package com.lt.flashcard.model.entity;

import com.google.code.morphia.annotations.Embedded;

/**
 * Store testcase information
 * @author ocsen
 * @version 1.0
 * @created 01-Nov-2012 14:01:40
 */
@Embedded
public class Testcase {

    /**
     * The time for this testcase
     */
    private int totaltime = 10;
    /**
     * The status of this testcase
     */
    private int status = STATUS_NEW;
    public static final int STATUS_NEW = 0;
    public static final int STATUS_WRONG = 1;
    public static final int STATUS_RIGHT = 2;
    /**
     * Max score for this testcase
     */
    private int maxscore = 0;
    private int totalwords = 0;
    /**
     * Testing type: typing, matching...
     */
    private int testtype = TYPE_MULTICHOICE;
    public static final int TYPE_MULTICHOICE = 0;
    public static final int TYPE_MATCHING = 1;
    public static final int TYPE_TYPING = 2;
    /**
     * Actual result type
     */
    private int resulttime = 0;
    /**
     * The result score
     */
    private int resultscore = 0;
    /**
     * Note of this testcase
     */
    private String note = "";
    /**
     * Store the flashcard id of this testcase
     */
    private Long flashcardid;

    /** Use for test matching **/
    private TestcaseMatchingData matching0;
    private TestcaseMatchingData matching1;
    private TestcaseMatchingData matching2;
    private TestcaseMatchingData matching3;

    /** Use for test typing **/
    private String typingTerm; // Store the term for typing
    private String typingSentence; // Store the sentence that the term is missing
    private String typingImage = "";
    private String typingType = "";

    public static final String TYPING_DEFINITION = "definition";
    public static final String TYPING_NOTE = "note";

    /** Use for multichoice **/
    private String multiType;
    /** Can be term, definition **/
    public static final String MULTI_TERM = "term";
    public static final String MULTI_DEFINITION = "definition";
    public static final String MULTI_NOTE = "note";
    public static final String MULTI_TERMSYNONYM = "termsynonym";
    public static final String MULTI_SYNONYMTERM = "synonymterm";
    public static final String MULTI_IMAGE = "image";// only for term-definition and the card has no definition

    private String multiSentence; // Store the sentence that display on top
    private int multiIndex; // the index of right solution
    private String multiImage;
    private String multiText0;// can store image with prefix "image:"
    private String multiText1;
    private String multiText2;
    private String multiText3;
    private String multiText4;
    private String multiText5;
    private String multiId0;
    private String multiId1;
    private String multiId2;
    private String multiId3;
    private String multiId4;
    private String multiId5;
    private boolean multiTyping = false;
    /**
     * whether this test take in the same date
     */
    private boolean isSameDate = false;
    /**
     * whether point is makeup
     */
    private boolean isMakeupPoint = false;

    public int getTotaltime() {
        return totaltime;
    }

    public void setTotaltime(int totaltime) {
        this.totaltime = totaltime;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public int getMaxscore() {
        return maxscore;
    }

    public void setMaxscore(int maxscore) {
        this.maxscore = maxscore;
    }

    public int getTesttype() {
        return testtype;
    }

    public void setTesttype(int testtype) {
        this.testtype = testtype;
    }

    public int getResulttime() {
        return resulttime;
    }

    public void setResulttime(int resulttime) {
        this.resulttime = resulttime;
    }

    public int getResultscore() {
        return resultscore;
    }

    public void setResultscore(int resultscore) {
        this.resultscore = resultscore;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    public Long getFlashcardid() {
        return flashcardid;
    }

    public void setFlashcardid(Long flashcardid) {
        this.flashcardid = flashcardid;
    }

    public TestcaseMatchingData getMatching0() {
        return matching0;
    }

    public void setMatching0(TestcaseMatchingData matching0) {
        this.matching0 = matching0;
    }

    public TestcaseMatchingData getMatching1() {
        return matching1;
    }

    public void setMatching1(TestcaseMatchingData matching1) {
        this.matching1 = matching1;
    }

    public TestcaseMatchingData getMatching2() {
        return matching2;
    }

    public void setMatching2(TestcaseMatchingData matching2) {
        this.matching2 = matching2;
    }

    public String getTypingTerm() {
        return typingTerm;
    }

    public void setTypingTerm(String typingTerm) {
        this.typingTerm = typingTerm;
    }

    public String getTypingSentence() {
        return typingSentence;
    }

    public void setTypingSentence(String typingSentence) {
        this.typingSentence = typingSentence;
    }

    public String getMultiSentence() {
        return multiSentence;
    }

    public void setMultiSentence(String multiSentence) {
        this.multiSentence = multiSentence;
    }

    public String getMultiText0() {
        return multiText0;
    }

    public void setMultiText0(String multiText0) {
        this.multiText0 = multiText0;
    }

    public String getMultiText1() {
        return multiText1;
    }

    public void setMultiText1(String multiText1) {
        this.multiText1 = multiText1;
    }

    public String getMultiText2() {
        return multiText2;
    }

    public void setMultiText2(String multiText2) {
        this.multiText2 = multiText2;
    }

    public String getMultiText3() {
        return multiText3;
    }

    public void setMultiText3(String multiText3) {
        this.multiText3 = multiText3;
    }

    public String getMultiText4() {
        return multiText4;
    }

    public void setMultiText4(String multiText4) {
        this.multiText4 = multiText4;
    }

    public String getMultiText5() {
        return multiText5;
    }

    public void setMultiText5(String multiText5) {
        this.multiText5 = multiText5;
    }

    public String getMultiType() {
        return multiType;
    }

    public void setMultiType(String multiType) {
        this.multiType = multiType;
    }

    public int getMultiIndex() {
        return multiIndex;
    }

    public void setMultiIndex(int multiIndex) {
        this.multiIndex = multiIndex;
    }

    public String getMultiImage() {
        return multiImage;
    }

    public void setMultiImage(String multiImage) {
        this.multiImage = multiImage;
    }

    public int getTotalwords() {
        return totalwords;
    }

    public void setTotalwords(int totalwords) {
        this.totalwords = totalwords;
    }

    public String getTypingImage() {
        return typingImage;
    }

    public void setTypingImage(String typingImage) {
        this.typingImage = typingImage;
    }

    public TestcaseMatchingData getMatching3() {
        return matching3;
    }

    public void setMatching3(TestcaseMatchingData matching3) {
        this.matching3 = matching3;
    }

    public String getTypingType() {
        return typingType;
    }

    public void setTypingType(String typingType) {
        this.typingType = typingType;
    }

    /**
     * @return the isSameDate
     */
    public boolean isSameDate() {
        return isSameDate;
    }

    /**
     * @param isSameDate
     *            the isSameDate to set
     */
    public void setSameDate(boolean isSameDate) {
        this.isSameDate = isSameDate;
    }

    /**
     * @return the isMakeupPoint
     */
    public boolean isMakeupPoint() {
        return isMakeupPoint;
    }

    /**
     * @param isMakeupPoint
     *            the isMakeupPoint to set
     */
    public void setMakeupPoint(boolean isMakeupPoint) {
        this.isMakeupPoint = isMakeupPoint;
    }

    /**
     * @return the multiTyping
     */
    public boolean isMultiTyping() {
        return multiTyping;
    }

    /**
     * @param multiTyping
     *            the multiTyping to set
     */
    public void setMultiTyping(boolean multiTyping) {
        this.multiTyping = multiTyping;
    }

    public String getMultiId0() {
        return multiId0;
    }

    public void setMultiId0(String multiId0) {
        this.multiId0 = multiId0;
    }

    public String getMultiId1() {
        return multiId1;
    }

    public void setMultiId1(String multiId1) {
        this.multiId1 = multiId1;
    }

    public String getMultiId2() {
        return multiId2;
    }

    public void setMultiId2(String multiId2) {
        this.multiId2 = multiId2;
    }

    public String getMultiId3() {
        return multiId3;
    }

    public void setMultiId3(String multiId3) {
        this.multiId3 = multiId3;
    }

    public String getMultiId4() {
        return multiId4;
    }

    public void setMultiId4(String multiId4) {
        this.multiId4 = multiId4;
    }

    public String getMultiId5() {
        return multiId5;
    }

    public void setMultiId5(String multiId5) {
        this.multiId5 = multiId5;
    }
}